#include<iostream>
#include<stdlib.h>
#include<fstream>
using namespace std;
int obtenerLineas (int &vidas, string &palabra);
void rellenarFalso(string &falso);
int pedirOpcion ();
int rellenarLetra (string &falso,string palabra,int &vidas);
int arriesgarPalabra (string palabra,int &vidas);
int main()
{
    char letra;
    int flag = 1;
    int vidas,contador,opcion;
    string palabra,falso;
    contador=obtenerLineas (vidas,palabra);
    if (contador!=2)
    {
        cout<<"Error"<<endl<<"Mala inscripcion de archivo";
        return 1;
    }
    falso=palabra;
    rellenarFalso(falso);
    while (vidas!=0 && flag!=0)
    {
        cout<<endl<<"Vidas: "<<vidas;
        cout<<endl<<"Palabra: "<<falso;
        cout<<endl<<endl<<"Que desea hacer?";
        cout<<endl<<endl<<"1)Decir letra";
        cout<<endl<<"2)Arriesgar Palabra";
        opcion = pedirOpcion ();
        switch (opcion)
        {
            case 1:
                    flag = rellenarLetra (falso,palabra,vidas);
                    break;
            case 2:
                    flag = arriesgarPalabra (palabra,vidas);
                    break;
        }
    }
    if (vidas==0)
        cout<<"Lo siento usted pierde";
    return 1;
}
int obtenerLineas (int &vidas, string &palabra)
{
    string variable;
    int contador = 0;
    ifstream archivo ("ahorcado.lol");
    while (getline(archivo,variable))
    {

        if (variable.substr(0,5)=="Vidas")
        {
            vidas=atoi(variable.substr(6,1).c_str());
            contador++;
        }
        if (variable.substr(0,7)=="Palabra")
        {
            palabra=variable.substr(8,variable.length()-8);
            contador++;
        }
    }
    return contador;
}
void rellenarFalso(string &falso)
{
    int i;
    for (i=0;i<falso.length();i++)
    {
        if (i!=0 && i!=falso.length()-1)
        {
            falso[i]='_';
        }
    }
    return;
}
int pedirOpcion ()
{
        int flag=0;
        int opcion;
        while (flag!=1)
        {
            cout<<endl<<endl<<"Ingrese una opcion: ";
            cin>>opcion;
            if (opcion==1 || opcion==2)
                flag=1;
            else
                cout<<"Error"<<endl<<"Ingrese un nuevo codigo";
        }
        return opcion;
}
int rellenarLetra (string &falso,string palabra,int &vidas)
{
    int i,flag;
    int contador = 0;
    char letra;
    cout<<endl<<endl<<"Ingrese una letra: ";
    cin>>letra;
    for (i=0;i<palabra.length();i++)
    {
        if (palabra[i]==letra)
        {
            falso[i]=letra;
            contador++;
        }
    }
    if (contador==0)
    {
        cout<<endl<<endl<<"Incorrecto";
        vidas--;
    }
    contador=0;
    for (i=0;i < falso.length();i++)
    {
        if (falso[i]=='_')
            contador++;
    }
    if (contador==0)
    {
        flag=0;
        cout<<"Felicidadades usted gana";
    }
    else
    {
        flag=1;
    }
    return flag;
}
int arriesgarPalabra (string palabra,int &vidas)
{
    string riesgo;
    int flag;
    cout<<"Ingrese la palabra: ";
    cin>>riesgo;
    if (riesgo==palabra)
    {
        cout<<"Felicidades, usted gana";
        flag=0;
    }
    else
        vidas=0;
    return flag;
}
